package com.routz.wxarticlelist.demo.service;

public interface WxArticleService {
    // 一 获取access_token
    // 1. 预授权码获取
    // 2. 引导用户进入授权页(扫码授权)
    // 3. 用户同意授权
    // 4. 授权后回调URI，得到授权码和过期时间
    // 5. 利用授权码调用公众号api
    // 5.1 推送ticket协议
    // 5.2 获取第三方平台access_token
    // 二 根据access_token获取文章列表
    /**
     * 1. 预授权码获取
     */
    /**
     * 推送component_verify_ticket
     *
     * 出于安全考虑，在第三方平台创建审核通过后，
     * 在第三方平台创建审核通过后，微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket，
     * 用于获取第三方平台接口调用凭据
     * 第三方平台方在收到ticket推送后也需进行解密（详细请见【消息加解密接入指引】）
     * ，接收到后必须直接返回字符串success。
     *
     * @param timestamp
     * @param nonce
     * @param msgSignature
     * @param postData
     */
    void recvTicket(String timestamp, String nonce, String msgSignature, String postData);
    /**
     * 获取第三方平台component_access_token
     *
     * 第三方平台通过自己的component_appid（即在微信开放平台管理中心的第三方平台详情页中的AppID和AppSecret）和
     * component_appsecret，
     * 以及component_verify_ticket（每10分钟推送一次的安全ticket）来获取自己的接口调用凭据（component_access_token）
     */
    void updateWxComponentAccessToken();

    /**
     * 获取预授权码pre_auth_code
     *
     * 第三方平台通过自己的接口调用凭据（component_access_token）
     * 来获取用于授权流程准备的预授权码（pre_auth_code）
     */
    void getPreAuthCode();

    /**
     * 进入授权页进行授权
     */
    String getAuthcUrl();

    /**
     * 授权回调url
     *
     * 使用授权码换取公众号或小程序的接口调用凭据和授权信息
     */
    String authCallback(String auth_code, String expires_in, String userId);

    /**
     * 获取列表
     */
    Object list(String type, int pageNum, int pageSize, String userId);

    /**
     * 获取详情
     * @param userId
     * @param mediaId
     * @return
     */
    Object info(String userId, String mediaId);
}
